package com.kakaxi.mybilibili.utils;

import android.content.Context;
import android.content.SharedPreferences;

import java.util.Map;

/**
 * 存储工具类
 * Created by kakaxi on 16/12/5.
 */

public class SharedPreferencesUtil {

    /** 存储 **/
    private static SharedPreferences mSharedPreferences;

    /** 当前存储名 **/
    private static String mCurrentSharedPreferenceName;

    /**
     * 写入xml文件
     *
     * @param name  xml文件名
     * @param key   键
     * @param value 键值
     */
    public static void writeXML(Context context, String name, String key, String value) {
        createSharedPreferences(context, name);
        if (value != null) {
            SharedPreferences.Editor editor = mSharedPreferences.edit();
            editor.putString(key, value);
            editor.apply();
        }
    }

    /**
     * 获取xml键值
     *
     * @param name xml文件名
     * @param key  键名
     * @return 如果返回空证明键值不存在
     */
    public static String readXML(Context context, String name, String key) {
        createSharedPreferences(context, name);
        if (mSharedPreferences.contains(key)) {
            return mSharedPreferences.getString(key, null);
        } else {
            return null;
        }
    }

    /****
     * 删除xml里面的键值
     *
     * @param name xml的文件名
     * @param key  键值
     */
    public static void removeXML(Context context, String name, String key) {
        createSharedPreferences(context, name);
        SharedPreferences.Editor editor = mSharedPreferences.edit();
        editor.remove(key);
        editor.apply();
    }

    /**
     * 获取素有数据
     *
     * @return 所有数据
     */
    public static Map<String, ?> getAll(Context context, String name) {
        createSharedPreferences(context, name);
        return mSharedPreferences.getAll();
    }

    /**
     * 统一创建存储器
     *
     * @param name 文件名
     */
    private static void createSharedPreferences(Context context, String name) {
        if (mSharedPreferences == null || !name.equals(mCurrentSharedPreferenceName)) {
            mSharedPreferences = context.getSharedPreferences(name, Context.MODE_PRIVATE);
            mCurrentSharedPreferenceName = name;
        }
    }


}
